package com.dyna.auth.mapper;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.dyna.api.domain.entity.SysOAuth2AccessToken;
import com.dyna.enums.DeleteValueEnum;
import com.dyna.mapper.BaseMapperX;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper
public interface OAuth2AccessTokenMapper extends BaseMapperX<SysOAuth2AccessToken> {

    default SysOAuth2AccessToken selectByAccessToken(String accessToken) {
        LambdaQueryWrapper<SysOAuth2AccessToken> query = new LambdaQueryWrapper<>();
        query.eq(SysOAuth2AccessToken::getAccessToken, accessToken);
        query.eq(SysOAuth2AccessToken::getDelFlag, DeleteValueEnum.DELETE.getValue());
        return this.selectOne(query);
    }

    default List<SysOAuth2AccessToken> selectListByRefreshToken(String refreshToken) {
        return selectList(SysOAuth2AccessToken::getRefreshToken, refreshToken);
    }

    default int del(Long id) {
        return update(new LambdaUpdateWrapper<SysOAuth2AccessToken>()
                .set(SysOAuth2AccessToken::getDelFlag, DeleteValueEnum.DELETED.getValue())
                .eq(SysOAuth2AccessToken::getId, id)
        );
    }

}